package com.sneaker.shower.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.sneaker.shower.entity.domain.order.PayOrderDO;
import com.sneaker.shower.entity.domain.order.SubOrderDO;
import com.sneaker.shower.entity.dto.*;
import com.sneaker.shower.entity.dto.coupon.CouponAddReqDTO;

import java.util.List;

public interface SubOrderService extends IService<SubOrderDO> {
    /**
     * 购物车下单
     *
     * @param subOrderGuidSCommitDTO subOrderGuidSCommitDTO
     */
    @Deprecated
    void cartSubmit(SubOrderGuidSCommitDTO subOrderGuidSCommitDTO);

    Boolean submit(SubOrderDTO subOrderDTO, Long cartGuid, Boolean isInCart, Byte orderState, Integer type);

    /**
     * 下单到客服
     */
    void commit(SubOrderDTO subOrderDTO);


    void orderCallBack(PayOrderDO payOrderDO, WxPayParamDTO wxPayParamDTO);

    KuaiDiDTO findKuaiDi(String guid);

    List<SubOrderDTO> getAll(Integer type);

    SubOrderDTO getByGuid(String guid);

    @Deprecated
    Boolean fillTrackingNumber(TrackingNumberDTO trackingNumberDTO);

    Boolean orderNotify(String guid);

    Boolean updateOrder(SubOrderDTO subOrderDTO);

    Boolean updateOrderKuaidi(KuaiDiNumberDTO subOrderDTO);

    Boolean checkReceive(String guid);

    Boolean receive(String guid);

    OrderCountDTO getCount();

    TryPayRespDTO tryPay(PrepareToPayReqDTO prepareToPayReqDTO);

    TryPayRespDTO offlineTryPay(PrepareToPayReqDTO prepareToPayReqDTO);

    PayOrderDTO polling(String guid);

    Boolean finish(String guid);

    Boolean addOrUpdateCoupon(CouponAddReqDTO couponAddReqDTO);
}
